package cn.sc.collection;

import cn.sc.collection.base.CacheObject;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @ClassName BaseCacheTemplate
 * @Author 谢卓才
 * @Description 规范模板
 * @Date 2022/11/13 9:17
 */
public interface BaseCacheTemplate<V> {

    /**
     * 获取value
     */
    CacheObject<V> value(String key);

    /**
     * 获取所有的value
     */
    List<CacheObject<V>> valueAll();

    /**
     * 添加进容器
     */
    CacheObject<V> increase(String key, CacheObject<V> value);

    /**
     * 添加进容器
     */
    void increase(Map<String,CacheObject<V>> values);

    /**
     * 删除所有缓存
     */
    Long cacheClear();

    /**
     * 删除缓存
     */
    Long delete(String key);

    /**
     * 删除多个缓存
     */
    Long delete(Set<String> keys);

    /**
     * 获取所有的key
     */
    Set<String> protoKeys();

    /**
     * 是否为空
     */
    boolean isEmpty();

    /**
     * 缓存长度
     */
    Long size();
}
